package com.hrpc.transport.message;

import java.nio.charset.StandardCharsets;

public class MessageFormatConstant {
    /**
     * 报文的内容：
     * 4B（magic）--->hrpc.getByte()
     * 1B(version)--->1
     * 2B(header length)--->首部的长度
     * 4B(full length)--->报文总长度 解决粘包问题：定长/自己设置长度进行获取
     * 1B(serialize) 序列化
     * 1B(compress) 压缩
     * 1B(requestType) 请求类型
     * 8B(requestId) 请求ID
     * body 长度不定，可以使用full_length - header_length 来计算
     * 出站时第一个经过的处理器
     */
    public static final byte[] MAGIC="hRpc".getBytes(StandardCharsets.UTF_8);
    public static final byte VERSION=1;
    public static final int VERSION_LENGTH=1;
    //头部信息的长度
    public static final short HEADER_LENGTH=(byte) (MAGIC.length + 1 + 2 + 4 + 3 + 8 + 8);
    //头部信息的长度占用的字节数
    public static final int HEADER_LENGTH_LENGTH=2;
    public static final short FULL_FIELD=4;
    //总长度占用的字节数
    public static final int FULL_FIELD_LENGTH=4;
    public static final int MAX_FRAME_LENGTH=1024*1024;

}
